;https://blog.csdn.net/andrew_yau/article/details/27839455
org 0x7c00  ;Origin 起始地址是0x7c00，主要影响绝对地址寻址指令，bios会将引导程序加载到0x7c00
BaseOfStack equ 0x7c00  ;BaseOfStack等价于0x7c00，equ伪指令的功能
Label_Start:
    mov ax, cs  ;intel风格，赋值由右向左
    mov ds, ax  ;将代码段寄存器地址赋值其他寄存器，默认0x0000
    mov es, ax
    mov ss, ax
    mov sp, BaseOfStack ;栈指针赋值
;======= clear screen
    mov ax, 0600h   ;AL=0为清屏功能
    mov bx, 0700h   ;BH设置颜色属性
    mov cx, 0
    mov dx, 0184fh
    int 10h
;======= set focus
    mov ax, 0200h   ;设置屏幕光标位置DH游标列，DL游标行，BH页码
    mov bx, 0000h
    mov dx, 0000h
    int 10h
;======= display on screan : Starting Booting......
    mov ax, 1301h   ;AL设置写入模式
    mov bx, 000fh   ;字符串属性，当AL为00h或者01h时生效
    mov dx, 0000h   ;DH游标的坐标行号，DL游标的坐标列号
    mov cx, 10      ;字符串的长度
    push ax         ;设置es和bp
    mov ax, ds
    mov es, ax
    pop ax
    mov bp, StartBootMessage
    int 10h
;======= reset floppy
    xor ah, ah  ;ah=00h
    xor dl, dl  ;dl=00h
    int 13h

    jmp $
StartBootMessage: db "Start Boot"
;======= fill zero until whole sector
    times 510 - ($ - $$) db 0
    dw 0xaa55
